package info.itloser.learnkotlindemo

import android.content.Intent
import android.os.Bundle
import android.view.MenuItem
import androidx.appcompat.app.AppCompatActivity
import androidx.navigation.findNavController
import androidx.navigation.ui.setupWithNavController
import com.google.android.material.bottomnavigation.BottomNavigationView
import info.itloser.learnkotlindemo.databinding.ActivityMainBinding
import info.itloser.pltv.ui.PLtvActivity

/**
 * 说明： 视图绑定 view-binding
 * 作者： itloser.info
 * 日期： 2021/12/20 14:48
 * 备注： https://developer.android.com/topic/libraries/view-binding#kotlin
 *
 * 官方推荐：在某些情况下，最好在项目中同时使用视图绑定和数据绑定。
 * 您可以在需要高级功能的布局中使用数据绑定，而在不需要高级功能的布局中使用视图绑定。
 */
class MainActivity : AppCompatActivity() {

    //在 M V VM 架构中
    //这里的 MainActivity 和 xml 一样 都属于 View 层
    //不同的是 MainActivity 只接收用户的交互 告诉 ViewMode
    //而 xml 是 只接收 ViewMode 提供的数据 来改变视图
    //所有的逻辑处理 和 控制 视图如何变化 都在 ViewMode 层

    private lateinit var mainBinding: ActivityMainBinding

    override fun onCreate(savedInstanceState: Bundle?) {
        super.onCreate(savedInstanceState)

        /**
         * 初始化布局 绑定视图
         */
        //写法1
//        mainBinding = DataBindingUtil.setContentView(this, R.layout.activity_main)
        //写法2
        mainBinding = ActivityMainBinding.inflate(layoutInflater)
        setContentView(mainBinding.root)

        initActionBar()

        initFragments()

        initDrawerLayout()

    }

    /**
     * 初始化抽屉布局
     */
    private fun initDrawerLayout() {


    }

    /**
     * 初始化标题
     */
    private fun initActionBar() {
        //这里标题放在fragment里 每个fragment对应不同的标题栏

    }

    /**
     * 初始化 fragments
     */
    private fun initFragments() {

        /**
         * 获取底部导航栏 (直接 mainBinding.navView 就不用 findViwById 了)
         */
        //写法1
//        val navView: BottomNavigationView = findViewById(R.id.nav_view)
        //写法2
        val navView: BottomNavigationView = mainBinding.navView

        //获取导航栏控制器
        val navController = findNavController(R.id.nav_host_fragment)

        //将控制器设置给底部导航栏
        navView.setupWithNavController(navController)

    }

    /**
     * 抽屉布局里的菜单的点击事件
     */
    fun onDrawerMenuClick(item: MenuItem) {
        when (item.itemId) {
            R.id.menu_about -> {
                //关于项目


            }

            R.id.menu_blog -> {
                //打开网页 跳转到我的博客 itloser.info

                //跳转 浏览器


            }

            R.id.menu_reward -> {
                //打开到赞助页面


            }

            R.id.menu_pl_tv -> {
                //打开热血电视页面
                startActivity(Intent(this, PLtvActivity::class.java))

            }
        }
    }


}
